// 封装倒计时逻辑函数
import { computed, onUnmounted, ref } from 'vue'
import dayjs from 'dayjs'
export const useCountDown = () => {
    // 1. 响应式的数据
    let timer = null
    const time = ref(0)
    // 格式化时间 为 xx分xx秒
    const formatTime = computed(() => dayjs.unix(time.value).format('mm分ss秒'))
    // 2. 开启倒计时的函数
    const start = (endTimeStr) => {
        // 开始倒计时的逻辑
        // 核心逻辑的编写：每隔1s就减一
        // time.value = currentTime
        // timer = setInterval(() => {
        //     time.value--
        // }, 1000)
        // 首先将传入的日期时间字符串转换为Date对象
        const endTime = new Date(endTimeStr.replace(/-/g, '/')); // 替换日期中的'-'为'/'以确保兼容性
        const currentTime = new Date();

        // 计算剩余时间（毫秒）
        let remainingTime = endTime - currentTime;

        // 如果结束时间早于当前时间，则剩余时间为0
        if (remainingTime <= 0) {
            remainingTime = 0;
            clearInterval(timer);
        }

        // 将剩余时间转换为秒
        time.value = Math.floor(remainingTime / 1000);

        // 每隔1秒减1
        timer = setInterval(() => {
            if (time.value <= 0) {
                clearInterval(timer);
                time.value = 0;
                // 可以在这里添加倒计时结束时的逻辑
            } else {
                time.value--;
            }
        }, 1000);
    }
    // 组件销毁时清除定时器
    onUnmounted(() => {
        timer && clearInterval(timer)
    })
    return {
        formatTime,
        start
    }
}